
FROM php:8.3-cli-alpine

# 可选：替换 Alpine 软件源为国内镜像以加速下载
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 设置时区
RUN apk add --no-cache tzdata && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone

# 安装系统依赖和 PHP 扩展
RUN apk add --no-cache --virtual .build-deps \
    $PHPIZE_DEPS \
    libzip-dev \
    linux-headers \
    # 安装运行时所需的库
    && apk add --no-cache \
    libzip \
    bash \
    procps \
    curl \
    # Alpine Linux 默认包含 crond，不需要额外安装
    # 安装并启用 GatewayWorker 必需的 PHP 扩展
    && docker-php-ext-install -j$(nproc) \
    bcmath \
    sockets \
    pcntl \
    posix \
    pdo_mysql \
    zip \
    # 安装 Redis 扩展（Workerman/GatewayWorker 常用）
    && pecl install redis && docker-php-ext-enable redis \
    # 清理构建依赖，减小镜像体积
    && apk del --no-network .build-deps \
    && rm -rf /tmp/pear

# 验证扩展安装（用于构建调试，生产环境可移除）
RUN php -m | grep -E 'bcmath|sockets|pcntl|redis|zip'

# 安装 Composer（可选，如果你的项目需要）
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# 设置工作目录
WORKDIR /var/www/html

# 创建日志目录和 cron 配置目录
RUN mkdir -p /var/log /var/spool/cron/crontabs

# Alpine 中默认包含 crond，不需要额外安装 cron 包